//
//  StatusCell.swift
//  Weibo
//
//  Created by 5201-mac on 2017/4/19.
//  Copyright © 2017年 wlb-mac. All rights reserved.
//

import UIKit
//左右间距
let margin: CGFloat = 8
//cell之间间距
let cellMargin: CGFloat = 4
//每列显示图片的数量
let colCount = 3
//最大的宽度
let maxWidth = ScreenWidth - 2 * margin
//每个cell的宽度
let itemWidth = (maxWidth - (CGFloat(colCount) - 1) * cellMargin) / CGFloat(colCount)

class StatusCell: UITableViewCell {
    
    @IBOutlet weak var iconView: UIImageView!
    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var timeLabel: UILabel!
    @IBOutlet weak var sourceLabel: UILabel!
    @IBOutlet weak var contentLabel: UILabel!
    
    @IBOutlet weak var pictureView: PictureView!
    //配图视图的高的约束对象
    @IBOutlet weak var pictureConsH: NSLayoutConstraint!
    //配图视图的宽的约束对象
    @IBOutlet weak var pictureConsW: NSLayoutConstraint!
    
    //绑定数据
    var status: Status? {
        didSet {
            //视图绑定模型数据
            //加载图片是耗时任务，不能够放在主线程中执行，必须在子线程中加载图片，等待图片加载完毕之后在主线程中更新UI
            //由于图片对象比较消耗流量，将加载的图片缓存到本地
            //每次通过url加载图片的时候，都应该根据图片的url来判断本地是否有缓存图片，如果有缓存图片就直接加载缓存图片，如果没有缓存图片就应该请求服务的图片再下载和保存
            
            //SDWebImage工作原理
            /*
             使用SD加载网络图片
             0.在每次使用图片的时候，根据图片的url地址对应的md5的串在指定的路径下查找对应的图片是否存在，如果存在就直接通过UIImage（contentofFile：）来加载沙盒路径中的图片，如果图片不存在就走第1步
             1.根据图片的url地址对url的String形式做md5加密，根据加密的串给图片对象命名
             2.当图片下载完毕之后，就给图片命名为md5的字符串
             3.图片放在沙盒中,在Library/Caches/default
             4.定期清理图片（7天之前的图片都给清理掉）
            */
            //iconView.image = UIImage(named: status?.user?.profile_image_url ?? "")
            let url = NSURL(string: status?.user?.profile_image_url ?? "")
            iconView.sd_setImage(with: url as URL?)
            nameLabel.text = status?.user?.name
            timeLabel.text = status?.created_at
            sourceLabel.text = status?.source
            contentLabel.text = status?.text
            print(NSHomeDirectory())
            
            //获取配图的数量
            let count = status?.pic_urls?.count ?? 0
            let pSize = caclutePictureViewSize(count: Int64(count))
            
            //更新配图视图的大小
            pictureConsH.constant = pSize.height
            pictureConsW.constant = pSize.width
            
            //设置配图视图的图片数组
            pictureView.pictures = status?.pic_urls
            
        }
    }
    

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }
    
    
    //根据配图的数量计算配图视图的大小
    func caclutePictureViewSize(count: Int64) -> CGSize{
        if count == 0 {
            return CGSize.zero
        }
        if count == 4 {
            //2*2
            let width = itemWidth * 2 + cellMargin
            return CGSize(width: width, height: width)
        }
        //程序走到这里（1，2，3，5，6，7，8，9）
        //如何根据数量来确定有多少行
        let rowCount = (count - 1) / colCount + 1
        let floatCount = CGFloat(rowCount)
        let height = floatCount * itemWidth + (floatCount - 1) * cellMargin
        return CGSize(width: maxWidth, height: height)
    }
    

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}
